<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    //Promise.allSettled()方法接受一组Promise实例作为参数
    //包装成一个新的Promise实例 只有等到所有这些参数实例都返回结果
    //不管是fulfilled还是rejected 包装实例才会结束
    const promises = [fetch('index.html'),fetch('https://does-not-exist/')]
    const results = await Promise.allSettled(promises)
    
    //过滤出成功的请求
    const successfulPromises = results.filter(p => p.status === 'fulfilled')
    //过滤出失败的请求 并输出原因
    const errors = results.filter(p => p.status === 'rejected')
    .map(p => p.reason)
    //有时候我们不关心异步操作的结果 只关心这些操作有没有结束
    //这时 Promise.allSettled()方法就很有用 

    //Promise.any()
    //该方法接受一组Promise实例作为参数 包装成一个新的Promise实例返回
    Promise.any([
    fetch('https://v8.dev/').then(() => 'home'),
    fetch('https://v8.dev/blog').then(() => 'blog'),
    fetch('https://v8.dev/docs').then(() => 'docs')
    ]).then( (first) => {//只要有一个fetch()请求成功
        console.log(first);
    }).catch((error)=>{//所有三个fetch()全部请求失败
        console.log(error)
    })

</script>
</html>